'use strict';

/**
 * @param {Egg.Application} app - egg application
 */
// 波场的
module.exports = app => {
  const { router, controller } = app;
  router.get('/', controller.home.index1);


  /////////////////////////////// 其它 ///////////////////////////////////
  // 查询erc20代币的精度
  router.post('/web/trx/test/other/get-decimals', controller.other.getDecimals);
  // 查询合约默认区块高度和当前区块高度
  router.post('/web/trx/test/other/get-begin-block', controller.other.getBeginBlock);
  // 波场默认地址格式转换成0x开头的地址格式
  router.post('/web/trx/test/other/trx-to-0x', controller.other.trxTo0x);
  // 获取token的价格
  router.post('/web/trx/test/other/get-token-price', controller.other.getTokenPrice);
  // 获取lp的价格
  router.post('/web/trx/test/other/get-lp-price', controller.other.getLpPrice);
  // 查询二级管理员地址
  router.post('/web/trx/test/other/get-owner-address', controller.other.getOwnerAddress);
  // 查询地址的gdcv余额
  router.post('/web/trx/test/other/get-gdcv-balance', controller.other.getGdcvBalance);
  // 查询一个代币地址的小数位
  router.post('/web/trx/test/other/get-token-decimals', controller.other.getTokenDecimals);

  /////////////////////////////// 挖矿合约 ///////////////////////////////////
  // 添加token池子
  router.post('/owner/trx/test/mining/add-token', controller.mining.addToken);
  // 添加lp池子
  router.post('/owner/trx/test/mining/add-lp', controller.mining.addLp);
  // 查询所有的池子
  router.post('/web/trx/test/mining/get-pools', controller.mining.getPools);
  // 开启或关闭某个池子
  router.post('/owner/trx/test/mining/open-or-close-pool', controller.mining.openOrClosePool);
  // 查询某个池子的详情
  router.post('/owner/trx/test/mining/get-pool-msg', controller.mining.getPoolMsg);
  // 查询用户的某个池子的质押信息
  router.post('/web/trx/test/mining/get-user-pool-msg', controller.mining.getUserPoolMsg);
  // 查询用户地址是否是有效用户
  router.post('/web/trx/test/mining/is-user', controller.mining.isUser);
  // 查询双重签名是否使用
  router.post('/web/trx/test/mining/sign-hash-status', controller.mining.signHashStatus);
  // 用户提取质押收益的二次签名===========
  router.post('/owner/trx/test/mining/second-signature', controller.mining.secondSignature);
  // 扫描质押事件
  router.post('/owner/trx/test/mining/scan-deposit', controller.mining.scanDeposit);
  // 扫描提现事件
  router.post('/owner/trx/test/mining/scan-withdraw', controller.mining.scanWithdraw);
  // 扫描用户提取收益事件
  router.post('/owner/trx/test/mining/scan-user-red', controller.mining.scanUserRed);

  /////////////////////////////// NFT合约 ///////////////////////////////////
  // 查询NFT的双重签名是否使用;
  router.post('/owner/trx/test/nft/sign-hash-status', controller.nft.signHashStatusNft);
  // 查询NFT的orderId是否使用
  router.post('/owner/trx/test/nft/order-id-status', controller.nft.orderIdStatusNft);

  // 开盲盒的二次签名;===================
  router.post('/owner/trx/test/nft/open-box-second-signature', controller.nft.openBoxSecondSignature);
  // 合成的二次签名;====================
  router.post('/owner/trx/test/nft/join-box-second-signature', controller.nft.joinBoxSecondSignature);
  // 市场购买交易的二次签名;================
  router.post('/owner/trx/test/nft/market-buy-token-second-signature', controller.nft.marketBuyTokenSecondSignature);
  // 首发购买交易的二次签名;=================
  router.post('/owner/trx/test/nft/nipo-buy-token-second-signature', controller.nft.nipoBuyTokenSecondSignature);
  // 领取NFT挖矿收益的二次签名;================
  router.post('/owner/trx/test/nft/draw-red-second-signature', controller.nft.drawRedSecondSignature);

  // 监听交易事件;
  router.post('/owner/trx/test/nft/transfer-event', controller.nft.transferEvent);
  // 监听铸造事件;
  router.post('/owner/trx/test/nft/mint-event', controller.nft.mintEvent);
  // 监听合成事件;
  router.post('/owner/trx/test/nft/join-event', controller.nft.joinEvent);
  // 监听购买事件;
  router.post('/owner/trx/test/nft/buy-event', controller.nft.buyEvent);
  // 监听购买首发事件;
  router.post('/owner/trx/test/nft/buy-nipo-event', controller.nft.buyNipoEvent);

  /////////////////////////////// Recycle合约 ///////////////////////////////////
  // 查询Recycle的双重签名是否使用;
  router.post('/owner/trx/test/recycle/sign-hash-status', controller.recycle.signHashStatusRecycle);
  // 查询Recycle的orderId是否使用
  router.post('/owner/trx/test/recycle/order-id-status', controller.recycle.orderIdMappingRecycle);
  // 扫描质押事件Recycle
  router.post('/owner/trx/test/recycle/scan-deposit', controller.recycle.scanDepositRecycle);
  // 用户提取收益加本金的二次签名===========
  router.post('/owner/trx/test/recycle/withdraw-second-signature', controller.recycle.withdrawRecycleSecondSignature);
  // 扫描用户提取收益加本金事件
  router.post('/owner/trx/test/recycle/scan-withdraw', controller.recycle.scanWithdrawRecycle);
  // 用户领取挖矿收益的二次签名===========
  router.post('/owner/trx/test/recycle/user-red-second-signature', controller.recycle.userRedRecycleSecondSignature);
  // 扫描领取挖矿收益事件
  router.post('/owner/trx/test/recycle/scan-user-red', controller.recycle.scanUserRedRecycle);
  // 回收NFT卡牌二次签名===========
  router.post('/owner/trx/test/recycle/recycle-card-second-signature', controller.recycle.recycleCardSecondSignature);
  // 扫描用户回收NFT卡牌事件
  router.post('/owner/trx/test/recycle/scan-recycle-card', controller.recycle.scanRecycleCard);


  /////////////////////////////// Mining2合约 ///////////////////////////////////
  // 扫描质押事件Mining2
  router.post('/owner/trx/test/Mining2/scan-deposit', controller.mining2.scanDepositMining2);
  // 扫描用户提取事件Mining2
  router.post('/owner/trx/test/Mining2/scan-withdraw', controller.mining2.scanWithdrawMining2);

};

